package com.newly.driver.sdk.device.video.service.api.qiniu;

import cn.hutool.json.JSONObject;
import com.newly.driver.sdk.device.video.cloud.device.qiniu.*;
import com.newly.driver.sdk.device.video.service.api.IDevice;

import java.util.List;

/**
 * @author gjm guan
 * @date 2021/10/21 16:24
 * @desc 七牛设备接口
 */
public interface IQiNiuDevice extends IDevice {
    /**
     * 添加设备
     *
     * @param qnCreateDeviceReq 创建设备请求数据
     * @return QNCreateDeviceResp.class
     */
    QNCreateDeviceResp qnCreateDevice(QNCreateDeviceReq qnCreateDeviceReq);

    /**
     * 删除设备
     *
     * @param qnRemoveDeviceResp 删除设备请求参数
     * @return QNRemoveDeviceReq.class
     */
    QNRemoveDeviceReq qnRemoveDevice(QNRemoveDeviceResp qnRemoveDeviceResp);

    /**
     * 查询设备
     *
     * @param qnQueryDeviceReq 查询设备请求参数
     * @return QNListDeviceReq.class
     */
    QNQueryDeviceResp qnListDevice(QNQueryDeviceReq qnQueryDeviceReq);

    /**
     * 根据国标id查询设备
     *
     * @param gbId 国标id
     * @return QNQueryDeviceReq.class
     */
    QNQueryDeviceResp qnQueryDevice(String gbId);

    /**
     * 修改设备
     *
     * @param qnModifyDeviceReq 修改的设备请求参数
     * @return QNModifyDeviceResp.class
     */
    QNModifyDeviceResp qnModifyDevice(QNModifyDeviceReq qnModifyDeviceReq);

    /**
     * 查询设备通道列表
     *
     * @param QNQueryChannelReq 查询设备通道请求参数
     * @return 通道列表
     */
    QNQueryChannelResp qnListChannel(QNQueryChannelReq QNQueryChannelReq);

    /**
     * 启动设备拉流
     *
     * @param namespaceId 空间id
     * @param gbId        国标id
     * @param channels
     * @return 启动拉流成功code码返回200
     */
    JSONObject qnStartDeviceStream(String namespaceId, String gbId, List<String> channels);

    /**
     * 停止设备拉流
     *
     * @param namespaceId 空间id
     * @param gbId        国标id
     * @param channels
     * @return 停止拉流成功code码返回200
     */
    JSONObject qnStopDeviceStream(String namespaceId, String gbId, List<String> channels);
}
